package com.wangbo.sort;

/**
 * 冒泡排序
 * 两个指针
 */
public class BubbleSort {
    public static void bubbleSort(int[] arr) {
        if (arr == null || arr.length < 2) {
            return;
        }

        // R: 遍历指针，从数组最后一个元素倒着移动到第二个元素
        for (int R = arr.length - 1; R > 0; R--) {
            // L: 遍历指针，从数组第一个元素移动到 R 前一个元素
            for (int L = 0; L < R; L++) {
                if (arr[L] > arr[L + 1]) {
                    swap(arr, L, L + 1);
                }
            }
        }
    }

    /**
     * 交换指针对象
     */
    public static void swap(int[] arr, int i, int j) {
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }
}
